package partThree;

import java.util.LinkedList;

/*本类用于测试LinkedList方法的使用*/
public class TestLinkedList {
    public static void main(String[] args) {
        System.out.println("--------创建List集合并添加元素---------");
        System.out.println();
        //1.创建集合对象
        LinkedList<String> list = new LinkedList<>();
        //2.向集合中添加数据
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        System.out.println("打印添加的所有元素："+list);

        System.out.println();
        System.out.println("------------测试在以创建集合中添加元素--------------");
        System.out.println();

        //3. 测试LinkedList添加元素的方法
        list.addFirst("addFirst");//添加首元素，返回添加的元素addFirst
        list.addLast("addLast");//添加尾元素，返回添加的元素addLast
        System.out.println("打印添加元素后的list"+list);

        list.offer("offer");//添加尾元素，返回添加的元素offer
        list.offerFirst("offerFirst");//添加首元素，返回添加的元素offerFirst
        list.offerLast("offerLast");//添加尾元素，返回添加的元素offerLast
        System.out.println("打印添加元素后的list"+list);

        System.out.println();
        System.out.println("------------测试在已创建集合中移除元素--------------");
        System.out.println();

        //4. 测试LinkedList移除元素的方法
        System.out.println("使用removeFirst移除首元素："+list.removeFirst());//移除首元素,成功移除会返回移除的元素
        System.out.println("打印移除元素后的list："+list);//打印移除后剩余的元素
        System.out.println("使用removeLast移除尾元素："+list.removeLast());//移除尾元素,成功移除会返回移除的元素
        System.out.println("打印移除元素后的list："+list);//打印移除后剩余的元素

        System.out.println("使用poll移除尾元素："+list.poll());//移除尾元素,成功移除会返回移除的元素
        System.out.println("打印移除元素后的list："+list);//打印移除后剩余的元素
        System.out.println("使用pollFirst移除首元素："+list.pollFirst());//移除首元素,成功移除会返回移除的元素
        System.out.println("打印移除元素后的list："+list);//打印移除后剩余的元素
        System.out.println("使用pollLast移除尾元素："+list.pollLast());//移除尾元素,成功移除会返回移除的元素
        System.out.println("打印移除元素后的list："+list);//打印移除后剩余的元素


        System.out.println();
        System.out.println("------------测试在创建的空集合中移除元素--------------");
        System.out.println();

        //5. 测试LinkedList在空集合中移除元素的方法
        LinkedList<String> nullList = new LinkedList<>();

        System.out.println("使用poll移除尾元素："+nullList.poll());//移除尾元素,移除位置u没有元素会返回null
        System.out.println("打印移除元素后的list："+nullList);//打印移除后剩余的元素

        //System.out.println("使用removeFirst移除首元素："+nullList.removeFirst());//移除首元素,移除位置u没有元素会抛出NoSuchElementException异常
        System.out.println("打印移除元素后的list："+nullList);//打印移除后剩余的元素


        System.out.println();
        System.out.println("------------测试在已创建集合中获取元素--------------");
        System.out.println();

        //6. 测试LinkedList获取元素方法
        System.out.println("使用element获取首元素："+list.element());//获取首元素  可以直接写到打印语句中，也可以单独写

        System.out.println("使用getFirst获取首元素："+list.getFirst());//获取首元素  可以直接写到打印语句中，也可以单独写
        System.out.println("使用getLast获取尾元素："+list.getLast());//获取尾元素  可以直接写到打印语句中，也可以单独写

        System.out.println("使用peek获取首元素："+list.peek());//获取尾元素
        System.out.println("使用pollFirst获取首元素："+list.pollFirst());//获取首元素
        System.out.println("使用peekLast获取首元素："+list.peekLast());//获取尾元素

        //6. 测试LinkedList获取元素方法在空集合中的返回值
        //System.out.println("使用element获取空集合的首元素："+nullList.element()); //会抛出异常NoSuchElementException
        //System.out.println("使用getFirst获取空集合的首元素："+nullList.getFirst()); //会抛出异常NoSuchElementException
        System.out.println("使用peek获取空集合的首元素："+nullList.peek()); //返回null

    }
}